const fs = require('fs');
const path = require('path');

// 定义目录路径
const COMPRESSED_DIR = 'compressed_images';
const TARGET_DIRS = [
  'miniprogram/images/news',
  'miniprogram/images/meals',
  'miniprogram/images/recipes',
  'miniprogram/images/discovers'
];

// 确保目标目录存在
TARGET_DIRS.forEach(dir => {
  if (!fs.existsSync(dir)) {
    console.log(`创建目录: ${dir}`);
    fs.mkdirSync(dir, { recursive: true });
  }
});

// 获取压缩目录中的所有图片
const compressedImages = fs.readdirSync(COMPRESSED_DIR)
  .filter(file => /\.(jpg|jpeg|png|gif)$/i.test(file));

console.log(`找到 ${compressedImages.length} 个压缩图片`);

// 替换原始图片
compressedImages.forEach(imgFile => {
  const sourceFile = path.join(COMPRESSED_DIR, imgFile);
  
  // 在目标目录中查找同名文件
  let found = false;
  TARGET_DIRS.forEach(dir => {
    const targetFile = path.join(dir, imgFile);
    
    if (fs.existsSync(targetFile)) {
      // 获取文件大小比较
      const sourceSize = fs.statSync(sourceFile).size / 1024; // KB
      const targetSize = fs.statSync(targetFile).size / 1024; // KB
      
      console.log(`替换图片: ${targetFile}`);
      console.log(`  原始大小: ${targetSize.toFixed(2)}KB`);
      console.log(`  压缩大小: ${sourceSize.toFixed(2)}KB`);
      console.log(`  减少: ${(targetSize - sourceSize).toFixed(2)}KB (${((1 - sourceSize/targetSize) * 100).toFixed(2)}%)`);
      
      // 复制压缩后的图片替换原始图片
      fs.copyFileSync(sourceFile, targetFile);
      found = true;
    }
  });
  
  if (!found) {
    // 如果没有找到匹配的原始图片，询问将图片放到哪个目录
    console.log(`未找到与 ${imgFile} 匹配的原始图片`);
    console.log(`请手动复制到相应目录，或运行:`);
    TARGET_DIRS.forEach((dir, index) => {
      console.log(`${index+1}. cp ${sourceFile} ${path.join(dir, imgFile)}`);
    });
    console.log('');
  }
});

console.log('图片替换完成！');
console.log('提示: 您也可以考虑将大图片上传到云存储，并通过URL引用。'); 